const app = getApp()
Page({
  data: {
    countDownVisible: false,
    timeData: {},
    mobile: '13899999999',
    code: '',
    redirectUrl: '',
    routeType: ''
  },
  onLoad(params) {
    this.setData({
      redirectUrl: params.redirectUrl,
      routeType: params.routeType
    })
  },
  countDownChange(ev) {
    this.setData({
      // 时间相关的一个对象
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  verifyMobile(mobile) {
    const reg = /^1[3-9]\d{9}$/
    return reg.test(mobile)
  },
  verifyCode(code) {
    const reg = /^\d{6}$/
    return reg.test(code)
  },
  async getCode() {
    // #1 校验手机号
    // 函数封装：不要提调用者决定做什么事情
    if (!this.verifyMobile(this.data.mobile.trim())) return wx.utils.toast('校验手机号失败')
    // #2 获取验证码
    const {
      code,
      data
    } = await wx.http.get('/code', {
      mobile: this.data.mobile
    })
    if (code !== 10000) return wx.utils.toast()
    wx.utils.toast('获取验证码成功')
    // #3 显示倒计时
    this.setData({
      countDownVisible: true,
      code: data.code
    })
  },
  // 登录的逻辑
  async submit() {
    const {
      mobile,
      code
    } = this.data
    // #1 校验手机号和验证码
    if (!this.verifyMobile(mobile.trim())) return wx.utils.toast('校验手机号失败')
    if (!this.verifyCode(code.trim())) return wx.utils.toast('校验验证码失败')
    // #2 调用登录的接口
    const {
      code: resCode,
      data
    } = await wx.http.post('/login', {
      mobile,
      code
    })
    if (resCode !== 10000) return wx.utils.toast()
    // #3 存储token（存储到本地和 app）
    app.setToken(data.token, data.refreshToken)
    // #4 跳转
    /* wx.redirectTo({
      url: '/pages/index/index',
    }) */
    // 跳转到 tabBar 页面
    if (this.data.redirectUrl) {
      // 程序调过来的
      wx[this.data.routeType]({
        url: this.data.redirectUrl,
      })
    } else {
      wx.switchTab({
        url: '/pages/index/index',
      })
    }
  }
})